A network switch is a computer networking device that connects network segments. A network switch may operate at one or more layers including, for example, the physical layer, the data link layer, the network layer, and/or the transport layer. While four layers are described, it is to be appreciated that in different examples a switch may operate at all seven layers of the Open Systems Interconnection (OSI) stack. A network switch may inspect data packets as they are received. Therefore, a network switch may determine the source and destination of a packet and may forward it accordingly. A network switch may contain some intelligence beyond examine and forward logic. This intelligence facilitates having a network switch perform some management functions. For example, a switch may selectively turn some port range on or off, may selectively establish and/or maintain priority settings for ports, may perform media access control (MAC) filtering to prevent MAC flooding, may use a spanning tree protocol, may perform link aggregation, and so on. Typically, if these management functions have been performed, they have been performed in actual (e.g., physical) network switches.
Virtualization concerns separating a resource from underlying physical resources. Virtualization techniques can be applied to various devices and programs (e.g., computers, operating systems) including network switches. A virtual machine (VM) is a representation of a real machine using software that provides an operating environment that can run a host and its applications. A VM may be used to run applications and/or may be used as an appliance for a designated purpose and/or function. Even though a network switch may be virtualized, ultimately a virtual switch may be connected in some manner to an actual switch. One skilled in the art will appreciate that in one example a virtual switch could connect virtual machines on a single physical server and thus may not be connected to an actual switch.
Virtualization allows one device (e.g., computer, switch) do the job of multiple devices by sharing the resources of the single device across multiple environments. A VM may have a number of virtual ports, which may also be referred to as virtual interfaces, that connect to a virtual switch. The virtual switch provides connectivity to the physical ports. Conventional virtual switches, to the extent they provided any QoS at all, typically only provided a single service that was limited to controlling the ingress interface to a VM using, for example, bandwidth limiting of traffic. A VM is a tightly isolated software container that can run its own operating system and applications as if it was a physical machine. A VM behaves like a physical machine and has its own virtual (e.g., software based) processor, memory, network interface card(s), and so on. If a VM or other virtual device could think, it would think that it was a real (e.g., physical) device. However, a virtual device may be pure software and thus may be completely independent from an underlying physical hardware. Therefore, a virtual device may be migrated between different underlying physical hardwares.